package com.demo.structural.decorator;

/**
 * 装饰器模式
 * 已有一个接口及接口的实现类，该接口的实现类的某些子类在某些方法上各有异同，在少用继承的原则下，解决方法就是对新增装饰类，该类初始化时包装原有实现类 
 * 然后实现接口重写某个方法，该模式实际上可以用继承实现类来替代,但是这种方法可以提供比继承更多的灵活性， 
 * JDK中的io流的设计是设计模式中装饰器模式的一个经典示范
 * @author allen
 *
 */
public class Test {
	
	public static void main(String[] args) {
		//原实现
		Calculate calculator = new Calculator();
		calculator.plus();
		calculator.minus();
		//修改后实现
		Calculate newCalculator = new NewCalculator(new Calculator());
		newCalculator.plus();
		newCalculator.minus();  
		
	}

}
